package servlet;

import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.util.*;

@WebListener
public class OnlineListener implements HttpSessionAttributeListener {

    public static List<String> onLineUsers = new ArrayList<>();

    public OnlineListener() {

    }

    @Override
    //调用会话的Setattribute()同时调用该函数
    public void attributeAdded(HttpSessionBindingEvent sbe) {
        sbe.getName(); //获取会话中的属性名
        sbe.getValue();  // //获取会话中的属性值
        if ( sbe.getName().equals("id")){
            onLineUsers.add((String)sbe.getValue());
        }
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent sbe) {
        if (sbe.getName().equals("id")){
            onLineUsers.remove((String)sbe.getValue());
        }
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent sbe) {
        if (sbe.getName().equals("loginedUser")){
            String loginedUser = (String) sbe.getSession().getAttribute("loginedUser");
            //移除原来的名字
            onLineUsers.remove(sbe.getValue());
            //添加新的名字
            onLineUsers.add(loginedUser);
        }
    }
}
